// #include <iostream>
// //头文件 c++ string
// #include <string>
// // #include <cstring> //C语言的
//
// using namespace std;
//
// //会用即可 无需考虑为啥
// void create_string()
// {
//     //常用的创建方式
//     string  str1;
//     str1 = "qqq";
//     string str2 = "i love you ";
//     string str3(str1);
//     string str4("abc");
//     cout << str1 << str2 << str3 << str4 << endl;
// }
//
// void create_operator()
// {
//     //比较 直接用运算符
//     string str1 = "aaaa";
//     string str2 = "bbbb";
//     if (str1 > str2)
//     {
//         cout <<str1 << endl;
//     }else
//     {
//         cout << str2 << endl;
//     }
//     //连接操作 直接 +
//     string str3 = str1+ str2;
//     cout << str3 << endl;
//
//     //转换 数字转字符串 to_string()
//     string num = to_string(123);
//     cout << num << endl;
// }
//
// void test_string_func()
// {
//     //c++的string 不能用printf打印
//     string str = "iloveypi";
//     cout << str.empty() << endl;
//     cout << str.size() << endl; //不加上\0的长度
//     //c_str() data() 转换为字符串
//     printf("%s\n",str.c_str());
//     printf("%s\n",str.data());
//
//     string one = "123";
//     string two ="234";
//     if (one.compare(two)>0)
//     {
//         cout <<1<<endl;
//     }
//
//     //了解一下 有这么函数 看到认识即可 自己写代码怎么方便怎么来
//     one.append(two);
//
//     cout << one.at(0) << endl;
//
//     for (int i=0;i<str.size();i++)
//     {
//         cout << str.at(i);
//     }
//     cout << endl;
//
//     for (auto v:str)
//     {
//         cout <<v;
//     }
//
//     cout << endl;
//
//     //删除字符串的某个部分
//     //BF KMP
//     auto b = str.begin();
//     cout << "第一个字符：" << b[0] <<*b << endl;
//
//     //迭代器访问  后面会写实现
//     for (auto iter = str.begin();iter!=str.end();iter++)
//     {
//         cout << *iter;
//     }
//
//     cout << endl;
//
//     int pos = str.find("love");
//     cout << pos << endl;
//     str.erase(pos,4);
//     cout << str << endl;
// }
//
// //允许空的结构体存在 占用1个字节 不是0
// struct Info
// {
//
// };
//
// //运行时类型识别 RTTI RUNTIME type identification
// //typeid 关键字 可以在运行 得到数据的类型 判定两个类型是否相同 可以把类型打印出来
// void test_typeid()
// {
//     cout << typeid(int).name() << endl;
//
//     Info* pstr;
//     Info Object;
//
//     cout << typeid(Info).name() << endl;
//     cout << typeid(Object).name() << endl;
//     cout << typeid(pstr).name() << endl;
// }
//
//
//
// int main()
// {
//
//     // create_string();
//     // create_operator();
//     // test_string_func();
//     test_typeid();
//
//
//     return 0;
//
// }